package org.bensteele.jirrigate.controller; import java.util.LinkedHashSet; import java.util.Set; import org.bensteele.jirrigate.controller.zone.Zone; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; /** * Result of an {@link IrrigationRequest} from a {@link Controller}. * * @author Ben Steele (ben@bensteele.org) */ public class IrrigationResult { protected enum Result { FAIL, SUCCESS, INTERRUPTED } private Set<Zone> zones = new LinkedHashSet<Zone>(); private final String commandSent; private String message; private Result result; private final long startTime; private long endTime; public IrrigationResult(String commandSent, Set<Zone> zones, long startTime) { this.commandSent = commandSent; this.startTime = startTime; this.zones = zones; } public String getCommandSent() { return this.commandSent; } public long getEndTime() { return endTime; } public String getMessage() { return message; } public Result getResult() { return this.result; } public long getStartTime() { return this.startTime; } public Set<Zone> getZones() { return this.zones; } public void setEndTime(long endTime) { this.endTime = endTime; } public void setMessage(String message) { this.message = message; } public void setResult(Result result) { this.result = result; } public void setZones(Set<Zone> zones) { this.zones = zones; } @Override public String toString() { String result = ""; DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm"); result += "Start: " + new DateTime(startTime).toString(formatter); result += "\nEnd: " + new DateTime(endTime).toString(formatter); result += "\nDuration: " + (((endTime - startTime) / 1000) / 60) + "m"; result += "\nZones: "; for (Zone z : zones) { result += z.getName() + ","; } result += "\nResult: " + this.result; result += "\nCommand Sent: " + commandSent; result += "\nMessage: " + message; return result; } }